<?php
namespace App\Controllers;
class Travel extends BaseController
{
public function index()
{
    // connect to the model
$places = new \App\Models\Places();
// retrieve all the records
$records = $places->findAll();

$table = new \CodeIgniter\View\Table();
// $table->addRow(anchor("travel/create/","Create"));
// $headings = $places->fields;
$headings = $places->db->getFieldNames('places');
$displayHeadings = array_slice($headings, 1, 2);
$table->setHeading(array_map('ucfirst', $displayHeadings));

// foreach ($records as $record) {
//     // $table->addRow($record->name,$record->description);
//     $nameLink = anchor("travel/showme/$record->id",$record->name);
//     $table->addRow($nameLink,$record->description);
//     }


// foreach ($records as $record) {
//     $nameLink = anchor("travel/showme/".$record['id'], 

//     $record['name']);
//     $table->addRow($nameLink, $record['description']);
//     }

foreach ($records as $record) {
    $nameLink = anchor(
        "travel/showme/" . $record['id'],
        $record['name']
    );
    $deleteLink = anchor(
        "travel/delete/" . $record['id'],
        'delete'
    );
    $table->addRow($nameLink, $record['description'],$deleteLink);
}

    $template = [
        'table_open' => '<table cellpadding="5px">',
        'cell_start' => '<td style="border: 1px solid #dddddd;">',
        'row_alt_start' => '<tr style="background-color:#dddddd">',
        ];
        $table->setTemplate($template);

        $fields = [
            'title' => 'Travel Destinations',
            'heading' => 'Travel Destinations',
            'create_link' => '<a href="travel/create/">create</a>',
            'footer' => 'Copyright GuanghengHuang'
        ];
$parser = \Config\Services::parser();
return $parser->setData($fields)
                 ->render('templates\top') .
                 $fields['create_link'].
          $table->generate() .
          $parser->setData($fields)
                 ->render('templates\bottom');
}

public function showme($id)  
{    
    $places = new \App\Models\Places();  
    
    $record = $places->find($id);  
    if (!$record) {  
        throw new \CodeIgniter\Exceptions\PageNotFoundException("Place with ID $id not found.");  
    }   
    $table = new \CodeIgniter\View\Table();  

    $table->addRow(anchor("travel/edit/$id","Edit"));

    $table->addRow('ID', $record['id']);  
    $table->addRow('Name', $record['name']);  
    $table->addRow('Description', $record['description']);  
    $table->addRow('Link', '<a href="' . $record['link'] . '" target="_blank">' . $record['link'] . '</a>'); 
    $table->addRow('Image', '<img src="/image/' . $record['image'] . '" alt="' . $record['name'] . ' image" style="max: width 450px;px;"/>'); 

    $template = [  
        'table_open' => '<table cellpadding="5px">',  
        'cell_start' => '<td style="border: 1px solid #dddddd;">',  
        'row_alt_start' => '<tr style="background-color:#dddddd">',  
    ];  

    $table->setTemplate($template);  
    $fields = [  
        'title' => 'Travel Destination Details',  
        'heading' => ' ' . $record['name'],  
        'footer' => 'Copyright GuanghengHuang'  
    ];  
    
    $parser = \Config\Services::parser();  
    return $parser->setData($fields)  
        ->render('templates/top') .  
        $table->generate() .  
        $parser->setData($fields)  
        ->render('templates/bottom');  
}
public function create($id = NULL)
{
$fields = [
'title' => 'Create a Destination',
'heading' => 'Create a Destination',
'footer' => 'Copyright GuanghengHuang'
];
$record = [
'id' => 0,
'name' => '',
'description' => '',
'link' => '',
'image' => '',
];
$parser = \Config\Services::parser();
return $parser->setData($fields)
->render('templates\top') .
$parser->setData($record)
->render('editplace') .
$parser->setData($fields)
->render('templates\bottom');
}
public function edit($id = NULL) { 
    $places = new \App\Models\Places();
     $record = $places->find($id);
     $fields = [
        'title' => 'Edit a Destination',
        'heading' => 'Edit a Destination',
        'footer' => 'Copyright GuanghengHuang'
      ];

      $parser = \Config\Services::parser();
         return $parser->setData($fields)
            ->render('templates\top') .
            $parser->setData($record)
             ->render('editplace') .
            $parser->setData($fields)
            ->render('templates\bottom');
}

public function delete($id)
    {
        $places = new \App\Models\Places();
        $place = $places->find($id);

        if ($place) {
            $places->delete($id);
            return redirect()->to('/travel')->with('message', 'Data deletion succeeded!');
        } else {
            return redirect()->to('/travel')->with('error', 'Data not found');
        }
    }

public function handle() { 
    $places = new \App\Models\Places();
    helper(['form', 'url']);
    // $record = $places->find($this->request->getPost('id'));
    $id = $this->request->getPost('id');
    $record = $places->find($id);
    if ($this->validate($places->validationRules)) {
        if($id ==0){
                    $places->save([
                        // 'id' => $this->request->getPost('id'),
                        'name' => $this->request->getPost('name'),
                         'description' => $this->request->getPost('description'),
                        'link' => $this->request->getPost('link'),
                        'image' => $this->request->getPost('image'),  
            ]);
         }else{
            $places->save([
                'id' => $this->request->getPost('id'),
                'name' => $this->request->getPost('name'),
                'description' => $this->request->getPost('description'),
                'link' => $this->request->getPost('link'),
                'image' => $this->request->getPost('image'),
                ]);
         }   
         }
                    $fields = [
                        'title' => 'Edit a Destination',
                        'heading' => 'Edit a Destination',
                         'footer' => 'Copyright GuanghengHuang'
                        ];
                     $parser = \Config\Services::parser(); 
                     
                     //Top of page
        $returnView = $parser->setData($fields)->render('templates\top');
         //Body of page
         if (!$this->validate($places->validationRules)) {
         $returnView .= $parser->renderString($this->validator->listErrors());
         $returnView .= $parser->setData($this->request->getPost())
         ->render('editplace');
         } else {
         $returnView .= $parser->renderString("<p>Success!</p>");
         $returnView .= $parser->setData($this->request->getPost())
         ->render('editplace');
        } 
        //Bottom of page
        $returnView .= $parser->setData($fields)
        ->render('templates\bottom');
        return $returnView;
}
}